/*
 * @Author: chentao 
 * @Date: 2022-05-23 10:06:44 
 * @Last Modified by: chentao
 * @Last Modified time: 2022-05-23 15:50:42
 * typescript中interface的字符串索引签名
 */
//字符串索引签名的语法如下
//[IndexName:string] Type;
interface InterfaceIndex{
     [key:number]:string;
}
//以下两种形式
const interfaceIndex:InterfaceIndex ={0:'string1',1:'string2',2:'string3' }
const myInterfaceIndex:InterfaceIndex =['string1','string2','string3']
console.log(`indexString:${myInterfaceIndex['0']}`)
const indexKeys = Object.keys(interfaceIndex)
indexKeys.forEach((itemKey,index)=>{
      console.log(`遍历key:${itemKey} => typeOf的key的类型 ${typeof itemKey} => ${interfaceIndex[itemKey]}`)
})
console.log(interfaceIndex)

interface InterfaceIndex2{
     [key:string]:number;
}
const interfaceIndex2:InterfaceIndex2 ={"s":2}

//https://wenku.baidu.com/view/650b92f575a20029bd64783e0912a21614797fe0.html
//在绝大多数情况下 我们都可以在使用对象前就确定对象的类型，并为其添加确定的类型
//使用场景：当⽆法确定对象中有哪些属性（或者说对象中可以出现任意多个属性），此时，就⽤到索引签名类型了

interface AnyObject{
     [key:string]:number
}

//可以使用该接口的索引签名时  给任意多个属性
let anyObj:AnyObject ={
      a:11,
      b:22,
      c:33
}